package com.project.common.fundamental.repository;

import com.project.common.data.Persistence;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

public interface PersistenceRepository<K extends Serializable, P extends Persistence<K>> {
    K addPersistence(P persistence);

    void updatePersistence(P persistence);

    void deletePersistence(K key);

    void deleteLogical(K key);

    P getPersistence(K key);

    List<P> listPersistence();

    /**
     * 批量新增持久化对象到数据库中
     */
    void addBatch(Collection<P> persistences);

    /**
     * 新增持久化对象到数据库中，触发唯一键则更新
     */
    void addOrUpdate(P persistence);

    /**
     * 批量新增持久化对象到数据库中，触发唯一键则更新
     */
    void addOrUpdateBatch(Collection<P> persistences);
}
